package com.cskaoyan.config;

import com.cskaoyan.service.UserService;
import org.springframework.aop.framework.ProxyFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * @author stone
 * @date 2022/06/17 11:17
 */
@Configuration
@ComponentScan("com.cskaoyan")
public class SpringConfiguration {


    // 按照类型取出 → 这个类型的组件在容器中只有一个
    // 注册组建的过程中，这个类型的组件确实只有一个，但是注册完，代理对象也是UserService类型
    @Bean
    public ProxyFactoryBean userServiceProxy(UserService userService) {
        ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
        // 委托类对象是谁 → 提供委托类对象
        proxyFactoryBean.setTarget(userService);
        // 做什么样的增强 → 提供通知组件的id
        proxyFactoryBean.setInterceptorNames("countTimeInterceptor");
        return proxyFactoryBean;
    }
}
